package com.xbongbong.pro.performanceset.pojo;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;

/**
 * 因ChartEntity中字段顺序跟页面展示的字段顺序不同，为了保证日志记录的顺序，需要中间类进行转换
 *
 * @author zyy
 * @date 2022/03/22/ 09:53:00
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class PerformanceChartLogOrderPojo implements Serializable {

    private static final long serialVersionUID = 8073695526599249744L;

    /**
     * 报表名称
     */
    @JSONField(ordinal = 1)
    private String name;
    /**
     * 指标简介
     */
    @JSONField(ordinal = 2)
    private String memo;
    /**
     * 主表数据来源，只能有一个，代表主驱动表 格式为：{"appId":1,"menuId":2,"linkAttr":"text_1"}
     */
    @JSONField(ordinal = 3)
    private JSONObject driverSources;
    /**
     * 统计的字段，{"name":"字段名","attr":"attr1"}。统计的数字型业务字段，如果是获取指标值(且不是求总数)的，则该条件必选
     */
    @JSONField(ordinal = 4)
    private JSONObject sourceAttr;
    /**
     * 归属人字段，{"name":"","attr":"userId"}。按照哪一个归属字段统计（如创建人、签订人等）
     */
    @JSONField(ordinal = 5)
    private JSONObject belongAttr;
    /**
     * 时间字段，{"name":"","attr":""}。按照哪一个时间范围字段进行统计（如创建时间、自定义的时间类型字段）
     */
    @JSONField(ordinal = 6)
    private JSONObject timeAttr;
    /**
     * 报表权限+数据权限dataPermissionAttr
     * {"export": 0, "visible": 0, "exportRule": {"dep": [], "role": [], "type": 2, "user": []}, "visibleScopeRule": {"dep": [], "role": [], "type": 2, "user": []}, "visibleScopeEnable": 0, "exportAdvanceEnable": 0
     * , "dataPermissionAttr" : {"attr": "creatorId", "originalAttr" : "creatorId_1"}}
     */
    @JSONField(ordinal = 7)
    private JSONObject permissions;
    /**
     * 用于存放报表的共用配置：操作权限，表头冻结，格式：[{}]
     */
    @JSONField(ordinal = 8)
    private JSONObject  explains;
    /**
     * 统计方式
     * @see com.xbongbong.paas.enums.AggTypeEnum
     */
    @JSONField(ordinal = 9)
    private Integer statisticsWay;
    /**
     * 单位（系统指标的单位可默认，如合同金额为“元”）
     */
    @JSONField(ordinal = 10)
    private String unit;
    /**
     * 穿透展示字段[{"name":"","attr":""}]
     */
    @JSONField(ordinal = 11)
    private JSONArray penetrateAttr;

}
